An object-oriented inference engine for PROLOG
نویسندگان
چکیده
This article describes an object-oriented inference engine for PROLOG. The inference engine is part of the Graphically Oriented Development Environment for Logic (Gödel) programming. Gödel incrementally translates source clauses to a persistent clause base in which each clause is an object. The inference engine is a distributed one in which each clause object knows how to unify and execute itself. This means that Gödel supports multiple queries at various points of execution. That is, although multiple queries cannot actually execute concurrently, they can be suspended at any point in their execution and reactivated at any time. This is a major advantage during debugging and exploratory programming. In addition, the inference engine supports primitive clauses written in the implementation language, SMALLTALK-80. This provides a simple interface between PROLOG clauses and SMALLTALK objects that puts the entire SMALLTALK80 class hierarchy in the hands of PROLOG programmers. Despite these advantages, an objectoriented interface engine has one drawback. In its most general form, the object granularity is too small, so that too many objects must be created and destroyed during program execution. This reduces execution speed. For this reason, several optimizations have been performed in the implementation to consolidate objects to a more reasonable size. With these optimizations, Gödel's interpreter has execution speeds that are still significantly slower than compiled PROLOG but acceptable for exploration, development, and debugging. In exchange, this approach provides integration with the object-oriented paradigm, including all the power that comes from objectoriented programming environments, including browsers, incremental translation, inspectors, debuggers, and multiple query execution, as well as the ability to easily experiment with both the environment and the PROLOG language itself.
منابع مشابه
Object Oriented Logic Programming as an Agent Building Infrastructure
We show that agent programming patterns are well expressed in terms of an object oriented layer extended with a generalized inheritance mechanism and independent logic programming based inference engines. Instead of proposing yet another agent programming “model” we simply derive key agent programming patterns as the natural result of a set of programming language constructs. The suggested equa...
متن کاملGödel : an Interactive Incremental Logic Programming Environment
SUMMARY This paper describes Gödel, an interactive incremental logic programming environment. Gödel supports programming in "standard" Prolog. However, Gödel uses its environment to superimpose a module structure and an inheritance typing system which can be used to support modern software engineering strategies. In addition, Gödel presents the user with a uniform user interface for browsing, e...
متن کاملExtending the Qualitative Trajectory Calculus Based on the Concept of Accessibility of Moving Objects in the Paths
Qualitative spatial representation and reasoning are among the important capabilities in intelligent geospatial information system development. Although a large contribution to the study of moving objects has been attributed to the quantitative use and analysis of data, such calculations are ineffective when there is little inaccurate data on position and geometry or when explicitly explaining ...
متن کاملcr-models: An Inference Engine for CR-Prolog
CR-Prolog is an extension of the knowledge representation language A-Prolog. The extension is built around the introduction of consistency-restoring rules (cr-rules for short), and allows an elegant formalization of events or exceptions that are unlikely, unusual, or undesired. The flexibility of the language has been extensively demonstrated in the literature, with examples that include planni...
متن کاملInference of Inheritance Relationships from Prolog Programs: a System Developed with PrologIII
In order to support the object oriented design of reusable software components, we propose to extract an inheritance hierarchy from a Prolog prototype. The goal is to define a reverse engineering technique for recovering structural design information through the analysis of the Prolog prototype. Inheritance is an essential means in object oriented languages to express inclusion polymorphism (i....
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Journal of Systems and Software
دوره 19 شماره
صفحات -
تاریخ انتشار 1992